// pages/goods-details/index.js
const {
    GetDetail,
    getduijie,
    getShopping,
    PostCollect,
    PostCollectupdata,
    PostCollectdel
} = require('../../http/api')
Page({
    /**
     * 页面的初始数据
     */
    data: {
        num: 0, //购物车角标
        id: 0,
        goodsListData: [], //分类数据
        show: false,
        properData: [], //弹框规格总数据
        proper: [], //弹框规格数据
        DuiData: [], //对接
        idAll: [], //父子ID
        numll: 1, //步进器
        flag: false, //判断是否收藏
        tabs: [{
            tabs_name: '商品简介',
            view_id: 'swiper-container',
            topHeight: 0
        }, {
            tabs_name: '商品详情',
            view_id: 'goods-des-info',
            topHeight: 0,
        }, {
            tabs_name: '商品评价',
            view_id: 'reputation',
            topHeight: 0,
        }],
        tabsHeight: 44, //tabs高度
        // tabclicked:true,
    },
    // tabs事件
    tabschange(e) {
        const index = e.detail.index
        // console.log(index);
        this.setData({
            tabclicked: true,
            toView: this.data.tabs[index].view_id //toView : scroll-into-view="{{toView}}" 
        })
        setTimeout(() => {
            this.setData({
                tabclicked: false
            })
        }, 1000)
    },
    //滚动事件
    bindscroll() {
        if (this.data.tabclicked) {
            return
        }
        // 计算tabs对应内容的高度  调用下边封装好的方法
        this.getTabsConTopHeightFunction()
        //tabs高度
        var tabsHeight = this.data.tabsHeight
        if (this.data.tabs[0].topHeight - tabsHeight <= 0 && this.data.tabs[1].topHeight - tabsHeight > 0) {
            this.setData({
                active: this.data.tabs[0].tabs_name //设置当前标签栏 等待返回吸顶到商品简介
            })
        } else if (this.data.tabs[1].topHeight - tabsHeight <= 0 && this.data.tabs[2].topHeight - tabsHeight > 0) {
            this.setData({
                active: this.data.tabs[1].tabs_name //设置当前标签栏 等待返回吸顶到商品详情
            })
        } else if (this.data.tabs[2].topHeight - tabsHeight <= 0) {
            this.setData({
                active: this.data.tabs[2].tabs_name //设置当前标签栏 等待返回吸顶到商品评价
            })
        }
    },
    onClose() {
        this.setData({
            show: false
        });
    },
    collect() {
        let token = wx.getStorageSync('token')
        let obj = {
            token,
            goodsId: this.data.id,
            type: 0
        }

        PostCollect(obj).then(res => {
            console.log(res);
            this.setData({
                flag: true,
            })
        })
        //检测是否收藏
        PostCollectupdata(obj).then(res2 => {
            console.log(res2)
            if (res2.code == 0) {
                PostCollectdel(obj).then(res3 => {
                    console.log(res3);
                    this.setData({
                        flag: false
                    })
                })
            }
        })


    },
    //   加入购物车弹出规格弹框
    async add(e) {
        this.setData({
            show: true
        });
        const res = await GetDetail(this.data.id)
        const res2 = await getduijie({
            goodsId: this.data.id
        })
        console.log(res);
        // console.log(res2);
        this.setData({
            properData: res.data,
            proper: res.data.properties,
            DuiData: res2.data
        })
    },
    //点击规格
    chil(e) {
        const {
            id
        } = e.currentTarget.dataset
        this.data.proper.forEach(ele => {
            ele.childsCurGoods.forEach(item => {
                if (item.id == id) {
                    item.status = !item.status
                    let all = {
                        optionId: item.propertyId,
                        optionValueId: item.id
                    }
                    this.data.idAll.push(all)
                    this.setData({
                        idAll: this.data.idAll
                    })
                }
            })
        })
        this.setData({
            proper: this.data.proper
        })
    },
    // 步进器
    onChange(e) {
        this.setData({
            numll: e.detail
        })
    },
    // 加入购物车
    async addGoods(e) {
        let token = wx.getStorageSync('token')
        let obj = {
            token,
            sku: JSON.stringify(this.data.idAll),
            number: this.data.numll,
            goodsId: this.data.id
        }
        console.log(obj);
        const res = await getShopping(obj)
        if (res.code == 0) {
            wx.showToast({
                title: '加入购物车成功',
            })
            // 关闭模态框
            this.setData({
                show: false
            })
            wx.showTabBar({
                animation: true,
            })
            Fnicons()
        } else {
            wx.showToast({
                title: '加入购物车失败',
                icon: 'error'
            })
        }
        //加入购物车清空suk数据
        this.setData({
            idAll: []
        })
    },
    //跳转购物车
    go() {
        wx.switchTab({
            url: '/pages/shop-cart/index',
        })
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        const {
            id
        } = options
        this.setData({
            id
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        GetDetail(this.data.id).then(res => {
            console.log(res);
            this.setData({
                goodsListData: res.data
            })
        })
        this.setData({
            num: wx.getStorageSync('num')
        })
        //是否收藏
        let token = wx.getStorageSync('token')
        let obj = {
            token,
            goodsId: this.data.id,
            type: 0
        }
        PostCollectupdata(obj).then(res2 => {
            console.log(res2)
            if (res2.code == 0) {
                this.setData({
                    flag: true
                })
            }
        })
        this.setData({
            createTabs: true //绘制tabs
        })
        //可以在onShow里 计算tabs高度  wx.createSelectorQuery()添加节点的布局位置的查询请求
        var query = wx.createSelectorQuery();
        query.select('#tabs').boundingClientRect((rect) => {
            this.setData({
                tabsHeight: rect.height
            })
        }).exec()
    },
    // 注意方法写在外边：：：
    // 得到每个tabs 里面对应内容的高  的函数方法
    // 通过viewid 再使用wx.createSelectorQuery()添加节点的布局位置的查询请求
    getTabsConTopHeightFunction() {
        var _this = this
        this.data.tabs.forEach((item, index) => {
            // 得到view_id 元素绑定的id名
            var viewId = '#' + item.view_id
            // 调用wx.createSelectorQuery()得到具体循环的每一项的topHeight
            _this.getTabsConTopHeight(viewId, index)
        })
    },
    getTabsConTopHeight(viewId, index) {
        var query = wx.createSelectorQuery();
        query.select(viewId).boundingClientRect((rect) => {
            if (!rect) {
                return
            }
            // 得到每一个内容id的top 
            this.data.tabs[index].topHeight = rect.top
            this.setData({
                tabs: this.data.tabs
            })
        }).exec()
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})